package com.iris.live.services.data.models;

import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

import javax.persistence.*;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

/**
 * Created by xin on 2016/8/9.
 */
@SuppressWarnings("JpaDataSourceORMInspection")
@Entity
@Table(name = "LSH活动表", schema = "sg_lsh", catalog = "")
public class Lsh活动表Model {
    private Integer 活动编号;
    private String 许可;
    private String 活动名称;
    private String 活动代码;
    private String 活动级别;
    private Integer 活动发起编号;
    private Integer 活动类型编号;
    private String 活动目的;
    private String 活动对象;
    private String 活动内容;
    private String 活动话术;
    private Date 开始日期;
    private Date 结束日期;
    private String 活动宣传页路径;
    private String 文件路径;
    private String 启用状态;
    private Timestamp 创建时间;
    private String 更新账号;
    private Timestamp 更新时间;
    //private Lsh活动推送Model lsh活动推送Model;
    private List<Lsh车型Model> lsh车型ModelList;

    /*@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST) @Fetch(FetchMode.SELECT) @PrimaryKeyJoinColumn
    @JoinColumn(referencedColumnName = "活动编号", name = "活动编号")
    @JsonProperty("推送")
    public Lsh活动推送Model getLsh活动推送Model() {
        return lsh活动推送Model;
    }

    public void setLsh活动推送Model(Lsh活动推送Model lsh活动推送Model) {
        this.lsh活动推送Model = lsh活动推送Model;
    }*/

    @ManyToMany(fetch = FetchType.EAGER) @Fetch(FetchMode.SELECT)
    @JoinTable(name = "LSH活动车型表",
            joinColumns = {
                    @JoinColumn(name = "活动编号", referencedColumnName = "活动编号")
            },
            inverseJoinColumns = {
                    @JoinColumn(name = "车型编号", referencedColumnName = "车型编号")
            }
    )
    @JsonProperty("车型")
    public List<Lsh车型Model> getLsh车型ModelList() {
        return lsh车型ModelList;
    }

    public void setLsh车型ModelList(List<Lsh车型Model> lsh车型ModelList) {
        this.lsh车型ModelList = lsh车型ModelList;
    }

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "活动编号")
    public Integer get活动编号() {
        return 活动编号;
    }

    public void set活动编号(Integer 活动编号) {
        this.活动编号 = 活动编号;
    }

    @Basic
    @Column(name = "许可")
    public String get许可() {
        return 许可;
    }

    public void set许可(String 许可) {
        this.许可 = 许可;
    }

    @Basic
    @Column(name = "活动名称")
    public String get活动名称() {
        return 活动名称;
    }

    public void set活动名称(String 活动名称) {
        this.活动名称 = 活动名称;
    }

    @Basic
    @Column(name = "活动代码")
    public String get活动代码() {
        return 活动代码;
    }

    public void set活动代码(String 活动代码) {
        this.活动代码 = 活动代码;
    }

    @Basic
    @Column(name = "活动级别")
    public String get活动级别() {
        return 活动级别;
    }

    public void set活动级别(String 活动级别) {
        this.活动级别 = 活动级别;
    }

    @Basic
    @Column(name = "活动发起编号")
    public Integer get活动发起编号() {
        return 活动发起编号;
    }

    public void set活动发起编号(Integer 活动发起编号) {
        this.活动发起编号 = 活动发起编号;
    }

    @Basic
    @Column(name = "活动类型编号")
    public Integer get活动类型编号() {
        return 活动类型编号;
    }

    public void set活动类型编号(Integer 活动类型编号) {
        this.活动类型编号 = 活动类型编号;
    }

    @Basic
    @Column(name = "活动目的")
    public String get活动目的() {
        return 活动目的;
    }

    public void set活动目的(String 活动目的) {
        this.活动目的 = 活动目的;
    }

    @Basic
    @Column(name = "活动对象")
    public String get活动对象() {
        return 活动对象;
    }

    public void set活动对象(String 活动对象) {
        this.活动对象 = 活动对象;
    }

    @Basic
    @Column(name = "活动内容")
    public String get活动内容() {
        return 活动内容;
    }

    public void set活动内容(String 活动内容) {
        this.活动内容 = 活动内容;
    }

    @Basic
    @Column(name = "活动话术")
    public String get活动话术() {
        return 活动话术;
    }

    public void set活动话术(String 活动话术) {
        this.活动话术 = 活动话术;
    }

    @Basic
    @Column(name = "开始日期")
    public Date get开始日期() {
        return 开始日期;
    }

    public void set开始日期(Date 开始日期) {
        this.开始日期 = 开始日期;
    }

    @Basic
    @Column(name = "结束日期")
    public Date get结束日期() {
        return 结束日期;
    }

    public void set结束日期(Date 结束日期) {
        this.结束日期 = 结束日期;
    }

    @Basic
    @Column(name = "活动宣传页路径")
    public String get活动宣传页路径() {
        return 活动宣传页路径;
    }

    public void set活动宣传页路径(String 活动宣传页路径) {
        this.活动宣传页路径 = 活动宣传页路径;
    }

    @Basic
    @Column(name = "文件路径")
    public String get文件路径() {
        return 文件路径;
    }

    public void set文件路径(String 文件路径) {
        this.文件路径 = 文件路径;
    }

    @Basic
    @Column(name = "启用状态")
    public String get启用状态() {
        return 启用状态;
    }

    public void set启用状态(String 启用状态) {
        this.启用状态 = 启用状态;
    }

    @Basic
    @Column(name = "创建时间")
    public Timestamp get创建时间() {
        return 创建时间;
    }

    public void set创建时间(Timestamp 创建时间) {
        this.创建时间 = 创建时间;
    }

    @Basic
    @Column(name = "更新账号")
    public String get更新账号() {
        return 更新账号;
    }

    public void set更新账号(String 更新账号) {
        this.更新账号 = 更新账号;
    }

    @Basic
    @Column(name = "更新时间")
    public Timestamp get更新时间() {
        return 更新时间;
    }

    public void set更新时间(Timestamp 更新时间) {
        this.更新时间 = 更新时间;
    }

    @PrePersist
    public void onPrePersist() {
        this.set创建时间(new Timestamp(System.currentTimeMillis()));
        this.set更新时间(new Timestamp(System.currentTimeMillis()));
    }

    @PreUpdate
    public void onPreUpdate() {
        this.set更新时间(new Timestamp(System.currentTimeMillis()));
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Lsh活动表Model that = (Lsh活动表Model) o;

        if (活动编号 != null ? !活动编号.equals(that.活动编号) : that.活动编号 != null) return false;
        if (许可 != null ? !许可.equals(that.许可) : that.许可 != null) return false;
        if (活动名称 != null ? !活动名称.equals(that.活动名称) : that.活动名称 != null) return false;
        if (活动代码 != null ? !活动代码.equals(that.活动代码) : that.活动代码 != null) return false;
        if (活动级别 != null ? !活动级别.equals(that.活动级别) : that.活动级别 != null) return false;
        if (活动发起编号 != null ? !活动发起编号.equals(that.活动发起编号) : that.活动发起编号 != null) return false;
        if (活动类型编号 != null ? !活动类型编号.equals(that.活动类型编号) : that.活动类型编号 != null) return false;
        if (活动目的 != null ? !活动目的.equals(that.活动目的) : that.活动目的 != null) return false;
        if (活动对象 != null ? !活动对象.equals(that.活动对象) : that.活动对象 != null) return false;
        if (活动内容 != null ? !活动内容.equals(that.活动内容) : that.活动内容 != null) return false;
        if (活动话术 != null ? !活动话术.equals(that.活动话术) : that.活动话术 != null) return false;
        if (开始日期 != null ? !开始日期.equals(that.开始日期) : that.开始日期 != null) return false;
        if (结束日期 != null ? !结束日期.equals(that.结束日期) : that.结束日期 != null) return false;
        if (活动宣传页路径 != null ? !活动宣传页路径.equals(that.活动宣传页路径) : that.活动宣传页路径 != null) return false;
        if (文件路径 != null ? !文件路径.equals(that.文件路径) : that.文件路径 != null) return false;
        if (启用状态 != null ? !启用状态.equals(that.启用状态) : that.启用状态 != null) return false;
        if (创建时间 != null ? !创建时间.equals(that.创建时间) : that.创建时间 != null) return false;
        if (更新账号 != null ? !更新账号.equals(that.更新账号) : that.更新账号 != null) return false;
        if (更新时间 != null ? !更新时间.equals(that.更新时间) : that.更新时间 != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = 活动编号 != null ? 活动编号.hashCode() : 0;
        result = 31 * result + (许可 != null ? 许可.hashCode() : 0);
        result = 31 * result + (活动名称 != null ? 活动名称.hashCode() : 0);
        result = 31 * result + (活动代码 != null ? 活动代码.hashCode() : 0);
        result = 31 * result + (活动级别 != null ? 活动级别.hashCode() : 0);
        result = 31 * result + (活动发起编号 != null ? 活动发起编号.hashCode() : 0);
        result = 31 * result + (活动类型编号 != null ? 活动类型编号.hashCode() : 0);
        result = 31 * result + (活动目的 != null ? 活动目的.hashCode() : 0);
        result = 31 * result + (活动对象 != null ? 活动对象.hashCode() : 0);
        result = 31 * result + (活动内容 != null ? 活动内容.hashCode() : 0);
        result = 31 * result + (活动话术 != null ? 活动话术.hashCode() : 0);
        result = 31 * result + (开始日期 != null ? 开始日期.hashCode() : 0);
        result = 31 * result + (结束日期 != null ? 结束日期.hashCode() : 0);
        result = 31 * result + (活动宣传页路径 != null ? 活动宣传页路径.hashCode() : 0);
        result = 31 * result + (文件路径 != null ? 文件路径.hashCode() : 0);
        result = 31 * result + (启用状态 != null ? 启用状态.hashCode() : 0);
        result = 31 * result + (创建时间 != null ? 创建时间.hashCode() : 0);
        result = 31 * result + (更新账号 != null ? 更新账号.hashCode() : 0);
        result = 31 * result + (更新时间 != null ? 更新时间.hashCode() : 0);
        return result;
    }
}
